home *** CD-ROM | disk | FTP | other *** search
/ Champak 141 / (Vol 141) Oct 17 2011.iso / Games / flight-of-the-museum.swf / scripts / ui / Leaderboard.as < prev    next >
Encoding:
Text File  |  2011-10-17  |  5.9 KB  |  213 lines

  1. package ui
  2. {
  3.    import copy.CopyBank;
  4.    import flash.display.MovieClip;
  5.    import flash.events.*;
  6.    import flash.net.URLLoader;
  7.    import flash.net.URLRequest;
  8.    import flash.net.URLRequestMethod;
  9.    import flash.net.URLVariables;
  10.    
  11.    [Embed(source="/_assets/assets.swf", symbol="ui.Leaderboard")]
  12.    public class Leaderboard extends Section
  13.    {
  14.        
  15.       
  16.       private var _pageIndex:Number = 0;
  17.       
  18.       public var _doneButton:MovieClip;
  19.       
  20.       public var _right:MovieClip;
  21.       
  22.       public var _scoreField:MovieClip;
  23.       
  24.       public var _row02:MovieClip;
  25.       
  26.       public var _row04:MovieClip;
  27.       
  28.       public var _row01:MovieClip;
  29.       
  30.       public var _row08:MovieClip;
  31.       
  32.       public var _leaderboardCopy:MovieClip;
  33.       
  34.       public var _row03:MovieClip;
  35.       
  36.       public var _row07:MovieClip;
  37.       
  38.       public var _row09:MovieClip;
  39.       
  40.       public var _row06:MovieClip;
  41.       
  42.       public var _row05:MovieClip;
  43.       
  44.       public var _row10:MovieClip;
  45.       
  46.       public var _rankField:MovieClip;
  47.       
  48.       public var _nameField:MovieClip;
  49.       
  50.       private var _entryList:Array;
  51.       
  52.       private var _rows:Array;
  53.       
  54.       private var _scoreData:XML;
  55.       
  56.       public var _left:MovieClip;
  57.       
  58.       public function Leaderboard()
  59.       {
  60.          _pageIndex = 0;
  61.          super();
  62.          addEventListener("enterFrame",onLeaderboardEnterFrame);
  63.          _rows = [_row01,_row02,_row03,_row04,_row05,_row06,_row07,_row08,_row09,_row10];
  64.          _left.visible = false;
  65.          _left.addEventListener(MouseEvent.CLICK,onLeft);
  66.          _right.addEventListener(MouseEvent.CLICK,onRight);
  67.       }
  68.       
  69.       private function onReadError(e:ErrorEvent) : *
  70.       {
  71.          trace(e.type + ": " + e.text);
  72.       }
  73.       
  74.       private function setScoresDisplay() : *
  75.       {
  76.          var i:* = undefined;
  77.          var j:Number = NaN;
  78.          var k:Number = NaN;
  79.          var fieldPieces:Array = null;
  80.          var finalScore:String = null;
  81.          var d:Number = NaN;
  82.          if(_pageIndex >= 4)
  83.          {
  84.             _pageIndex = 4;
  85.             _right.visible = false;
  86.          }
  87.          if(_pageIndex <= 0)
  88.          {
  89.             _pageIndex = 0;
  90.             _left.visible = false;
  91.          }
  92.          for(i = 0; i < 10; i++)
  93.          {
  94.             j = i + _pageIndex * 10;
  95.             if(_entryList[j])
  96.             {
  97.                _rows[i]._nameField.text = _entryList[j].Name.substr(0,3).toUpperCase();
  98.                fieldPieces = _entryList[j].Score.split("");
  99.                fieldPieces.reverse();
  100.                finalScore = "";
  101.                for(k = 0; k < fieldPieces.length; k++)
  102.                {
  103.                   finalScore = fieldPieces[k] + finalScore;
  104.                   d = k % 3;
  105.                   if(k < fieldPieces.length - 1)
  106.                   {
  107.                      if(d == 2)
  108.                      {
  109.                         finalScore = "," + finalScore;
  110.                      }
  111.                   }
  112.                }
  113.                _rows[i]._scoreField.text = finalScore;
  114.                _rows[i]._rankField.text = String(j + 1);
  115.                _rows[i].visible = true;
  116.             }
  117.             else
  118.             {
  119.                _rows[i].visible = false;
  120.             }
  121.          }
  122.       }
  123.       
  124.       private function onParseError(e:TypeError) : *
  125.       {
  126.          trace(e.toString());
  127.       }
  128.       
  129.       private function onRight(event:*) : *
  130.       {
  131.          _left.visible = true;
  132.          ++_pageIndex;
  133.          setScoresDisplay();
  134.       }
  135.       
  136.       private function onLeaderboardEnterFrame(event:*) : *
  137.       {
  138.          super.onSectionEnterFrame();
  139.       }
  140.       
  141.       private function parseXML() : void
  142.       {
  143.          var i:int = 0;
  144.          var hsr:MovieClip = null;
  145.          var scoreList:XMLList = null;
  146.          var entry:* = undefined;
  147.          _entryList = new Array();
  148.          scoreList = _scoreData.entry;
  149.          for each(entry in scoreList)
  150.          {
  151.             _entryList.push({
  152.                "Name":entry.@pname.toString(),
  153.                "Score":entry.@score.toString()
  154.             });
  155.          }
  156.          setScoresDisplay();
  157.       }
  158.       
  159.       private function onLeft(event:*) : *
  160.       {
  161.          _right.visible = true;
  162.          --_pageIndex;
  163.          setScoresDisplay();
  164.       }
  165.       
  166.       public function initCopy() : *
  167.       {
  168.          _leaderboardCopy._tHolder._copy.text = CopyBank.Instance.LEADERBOARD;
  169.          _rankField._tHolder._copy.text = CopyBank.Instance.RANK;
  170.          _nameField._tHolder._copy.text = CopyBank.Instance.NAME;
  171.          _scoreField._tHolder._copy.text = CopyBank.Instance.SCORE;
  172.       }
  173.       
  174.       private function onXMLLoad(e:Event) : *
  175.       {
  176.          try
  177.          {
  178.             _scoreData = new XML(URLLoader(e.target).data);
  179.             trace("scores loaded");
  180.          }
  181.          catch(e:TypeError)
  182.          {
  183.             onParseError(e);
  184.          }
  185.          parseXML();
  186.       }
  187.       
  188.       public function loadScores() : *
  189.       {
  190.          var loader:URLLoader = null;
  191.          var u:URLRequest = null;
  192.          var vars:URLVariables = null;
  193.          var nocache:uint = 0;
  194.          _pageIndex = 0;
  195.          trace("load scores");
  196.          loader = new URLLoader();
  197.          loader.addEventListener(Event.COMPLETE,onXMLLoad);
  198.          loader.addEventListener(IOErrorEvent.IO_ERROR,onReadError);
  199.          loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onReadError);
  200.          u = new URLRequest("http://stats.soap.com.au/highscore/highscoreXML.php");
  201.          nocache = uint(Math.random() * uint.MAX_VALUE);
  202.          vars = new URLVariables();
  203.          vars["gameid"] = 36;
  204.          vars["start"] = 0;
  205.          vars["count"] = 101;
  206.          vars["nocache"] = nocache.toString(36);
  207.          u.method = URLRequestMethod.GET;
  208.          u.data = vars;
  209.          loader.load(u);
  210.       }
  211.    }
  212. }
  213.